package com.example.contextcube.util;

import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.widget.Toast;

/**
 * Toast消息管理工具类
 * 解决连续显示Toast时消息延迟的问题
 * 通过取消旧消息并立即显示新消息提供实时用户反馈
 */
public class ToastManager {
    private static Toast currentToast;
    private static final Handler mainHandler = new Handler(Looper.getMainLooper());
    
    /**
     * 显示Toast消息，取消之前显示的Toast
     * 
     * @param context 上下文
     * @param message 要显示的消息
     * @param duration 显示时长
     */
    public static void show(Context context, String message, int duration) {
        if (context == null) return;
        
        // 确保在主线程执行
        if (Looper.myLooper() == Looper.getMainLooper()) {
            showToast(context, message, duration);
        } else {
            mainHandler.post(() -> showToast(context, message, duration));
        }
    }
    
    /**
     * 显示短时间Toast
     */
    public static void showShort(Context context, String message) {
        show(context, message, Toast.LENGTH_SHORT);
    }
    
    /**
     * 显示长时间Toast
     */
    public static void showLong(Context context, String message) {
        show(context, message, Toast.LENGTH_LONG);
    }
    
    /**
     * 显示Toast的具体实现
     */
    private static void showToast(Context context, String message, int duration) {
        // 如果有正在显示的Toast，取消它
        if (currentToast != null) {
            currentToast.cancel();
        }
        
        // 创建新的Toast
        currentToast = Toast.makeText(context, message, duration);
        currentToast.show();
    }
} 